/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package facades;

import entities.C;
import entities.SerieTallaje;
import entities.interfaces.PedidoInterfaz;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author damfercer
 */
@Stateless
public class SerieTallajeFacade extends AbstractFacade<SerieTallaje> {
    @PersistenceContext(unitName = "CorporatePU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public SerieTallajeFacade() {
        super(SerieTallaje.class);
    }
    
    public List<SerieTallaje> getSeriesTallajeDeC(C c, String sql){
//      TODO: Propuesta de refactorización: El generador de SQL tiene un @Produces que devuelve el sql y estos métodos que observan lo obtienen sin acoplamiento del Bean.
        StringBuilder sb=new StringBuilder();
        sb.append("SELECT DISTINCT serie_tallaje.* FROM producto, c, serie_tallaje WHERE producto.C=c.ID_C AND producto.SERIE_TALLAJE=serie_tallaje.ID_SERIE_TALLAJE AND producto.C=");
        sb.append(c.getIdC());
        if(sql!=null){
            sb.append(sql);
        }
        Query q=em.createNativeQuery(sb.toString(), SerieTallaje.class);
        List<SerieTallaje> seriesTallaje=q.getResultList();
        return seriesTallaje;
    }
    
    public List<SerieTallaje> getSeriesTallajeDePedidoYC(PedidoInterfaz p, C c){
        Query q=null;
        if(p.getClass().getName().equals("entities.Pedido")){
            q=em.createNamedQuery("SerieTallaje.findByPedidoYC");
        }
        else if(p.getClass().getName().equals("entities.PedidoFabrica")){
            q=em.createNamedQuery("SerieTallaje.findByPedidoFabricaYC");
        }
        q.setParameter(1, p.getId());
        q.setParameter(2, c.getIdC());
        return q.getResultList();
    }
    
}
